SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paCertificaObtenerProyectos]
-- < Registro de Actualizaciones >
-- 25-10-2006
-- 07-11-2006
-- 22-04-2007

	@IDProyecto 		INT = NULL,
	@NombreProyecto 	VARCHAR(200) = NULL,
	@AnioProyecto 		INT = NULL,
	@IdGrupoProyecto 	INT = NULL

 AS
SET NOCOUNT ON
-- Variables
DECLARE @IdUsuarioActivo INT
DECLARE @Consulta varchar(3000)

-- Obtener Usuario
SELECT @IdUsuarioActivo = IdUsuario FROM tb_Usuarios WHERE NTUser = SYSTEM_USER
	
IF EXISTS (SELECT * FROM Tb_RelUsuarioOrganizacion RUS WHERE RUS.idUsuario = @IdUsuarioActivo AND RUS.idorganizacion IS NULL )
	-- Si el Usuario posee permisos de Administrador - ve TODO
	SET @Consulta = 'SELECT Pr.IDProyecto, Pr.NombreProyecto, Pr.Anio, Pr.Destinatarios, 
				GP.Descripcion AS GrupoProyecto, EPS.Descripcion AS Estado
				FROM Tb_Proyectos Pr  
				    LEFT OUTER JOIN Tb_GruposProyecto GP ON Pr.IdGrupoProyecto=GP.IdGrupoProyecto
					INNER JOIN Tb_EstadosPS EPS ON Pr.EstadoPS=EPS.IdEstadoPS
			 	WHERE 1=1'
ELSE
	-- Si el Usuario NO posee permisos de Administrador - Filtra las Organizaciones que le corresponde
	SET @Consulta = 'SELECT Distinct(Pr.IDProyecto), Pr.NombreProyecto, Pr.Anio, Pr.Destinatarios, 
				GP.Descripcion AS GrupoProyecto, EPS.Descripcion AS Estado
				FROM Tb_Proyectos Pr  
			 		LEFT OUTER JOIN Tb_GruposProyecto GP ON Pr.IdGrupoProyecto=GP.IdGrupoProyecto
					INNER JOIN Tb_EstadosPS EPS ON Pr.EstadoPS=EPS.IdEstadoPS
					INNER JOIN Tb_SubProyectos SP ON SP.IdProyecto = Pr.IdProyecto 
					INNER JOIN Tb_RelSubOrganizacionesSP RSubSP ON RSubSP.IdSubProyecto = SP.IdSubProyecto 
						WHERE RSubSp.IdSubOrganizacion 
						    IN (SELECT SubO.IdSubOrganizacion FROM tb_SubOrganizaciones SubO WHERE SubO.Org 
					    		IN (SELECT RUO.idorganizacion  FROM Tb_RelUsuarioOrganizacion RUO 
		    						WHERE RUO.idUsuario = ' + CONVERT(VARCHAR(12),@IdUsuarioActivo) + '))'


IF @IDProyecto IS NOT NULL
	SET @Consulta = @Consulta + ' AND Pr.IDProyecto = '+CONVERT(VARCHAR(12),@IDProyecto)

IF @NombreProyecto IS NOT NULL
	SET @Consulta = @Consulta + ' AND Pr.NombreProyecto  LIKE '+'''%'+@NombreProyecto+'%'''

IF @AnioProyecto IS NOT NULL
	SET @Consulta = @Consulta + ' AND Pr.Anio = '+ CONVERT(VARCHAR(4),@AnioProyecto)

IF @IDGrupoProyecto IS NOT NULL
	SET @Consulta = @Consulta + ' AND Pr.IDGrupoProyecto = '+CONVERT(VARCHAR(12), @IDGrupoProyecto)

SET @Consulta = @Consulta + ' ORDER BY Pr.Anio DESC, Pr.NombreProyecto'

EXEC (@Consulta)
GO
GRANT EXECUTE ON  [dbo].[paCertificaObtenerProyectos] TO [Certificaciones]
GRANT EXECUTE ON  [dbo].[paCertificaObtenerProyectos] TO [CertificacionesAdministracion]
GRANT EXECUTE ON  [dbo].[paCertificaObtenerProyectos] TO [SoloVer]
GO
